// arco组件validator只有2个参数，一个value,一个回调
/**
 * 密码校验：8位以上，含大小写字母、数字、特殊字符
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */

export const validatePassword = (value, callback) => {
  let M = 4
  const L = /\d/
  const H = /[A-Z]/
  const K = /[a-z]/
  const I = /\W/

  const text = '密码格式：8～20位，必须包含字母、数字、特殊符号，并区分大小写'

  if (!L.test(value)) {
    M--
  }
  if (!H.test(value)) {
    M--
  }
  if (!K.test(value)) {
    M--
  }
  if (!I.test(value)) {
    M--
  }
  if (value.length > 20 || value.length < 8) {
    M--
  }

  if (M < 4) {
    callback(new Error(text))
  } else {
    callback()
  }
}

/**
 * 手机号校验
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export const validatePhone = (value, callback) => {
  const regex = new RegExp(/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/)
  if (regex.test(value) || !value) {
    callback()
  } else {
    callback(new Error('手机号格式不正确'))
  }
}
/**
 * 邮箱校验
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export const validateEmail = (value, callback) => {
  const regex = new RegExp(/^[\w-\.]+@[\w-]+(\.[\w-]+)*\.[a-z]{2,}$/i)

  if (regex.test(value) || !value) {
    callback()
  } else {
    callback(new Error('邮箱格式不正确'))
  }
}

// 数字校验
export const validateRulesNumber = (value, callback) => {
  const regex = new RegExp(/[\u4E00-\u9FA5]/g)
  const regex1 = new RegExp(/[a-zA-Z]/g)
  if (regex.test(value) || regex1.test(value)) {
    callback(new Error('只能为数字!'))
  } else {
    callback()
  }
}
